package ru.spb.osll.myfit.util;

import java.io.File;
import java.util.ResourceBundle;

public final class MyFitProperties {
  // private static final String CONFIG_FILE_NAME = "config.properties";
  //
  // public static final String TEST_DIRECTORY = "test.dir";
  // public static final String LOGGER_OUTPUT_FILE = "logger.output.file";
  // public static final String MYFIT_LOGGER_CATEGORY_NAME =
  // "myfit.logger.category.name";
  // private static ConcurrentHashMap<String, String> map = new
  // ConcurrentHashMap<String, String>();
  //
  // private static final ArrayList<String> unmodifiableKeys = new
  // ArrayList<String>();
  //
  // static {
  // unmodifiableKeys.add(LOGGER_OUTPUT_FILE);
  // unmodifiableKeys.add(TEST_DIRECTORY);
  // unmodifiableKeys.add(MYFIT_LOGGER_CATEGORY_NAME);
  // }
  //
  // static {
  // initializeProperties();
  // }
  //
  // private MyFitProperties() {
  // }
  //
  // private static void initializeProperties() {
  // ClassLoader classLoader = MyFitProperties.class.getClassLoader();
  // URL[] ur = ((URLClassLoader) classLoader).getURLs();
  // File configFile = null;
  //
  // for (URL url : ur) {
  // File file = new File(url.getFile());
  // if (file.isDirectory()) {
  // for (String fileName : file.list()) {
  // if (fileName.equals(CONFIG_FILE_NAME)) {
  // configFile = new File(file, fileName);
  // break;
  // }
  // }
  // }
  // }
  //
  // if (configFile == null) {
  // System.err.println("config file not found");
  // return;
  // }
  //
  // FileInputStream in = null;
  // try {
  // in = new FileInputStream(configFile);
  // PropertyResourceBundle bundle = new PropertyResourceBundle(in);
  // Set<String> keys = bundle.keySet();
  // for (String key : keys) {
  // try {
  // map.put(key, bundle.getString(key));
  // } catch (MissingResourceException e) {
  // e.printStackTrace();
  // }
  // }
  // in.close();
  // } catch (IOException e) {
  // e.printStackTrace();
  // } finally {
  // if (in != null) {
  // try {
  // in.close();
  // } catch (IOException ignore) {
  // }
  // }
  // }
  // }
  //
  // public static void setProperty(String key, String value) {
  // checkKey(key);
  // checkValue(value);
  // if (unmodifiableKeys.contains(key)) {
  // throw new IllegalArgumentException("The property \"" + key +
  // "\" is unmodifiable");
  // }
  // map.put(key, value);
  // }
  //
  // public static String getProperty(String key) {
  // checkKey(key);
  // return map.get(key);
  // }
  //
  // public static String getProperty(String key, String defaultValue){
  // String value = getProperty(key);
  // return value == null ? defaultValue : value;
  //
  // }
  //
  // private static void checkValue(String value) {
  // if (value == null) {
  // throw new NullPointerException("value can't be null");
  // }
  // }
  //
  // private static void checkKey(String key) {
  // if (key == null) {
  // throw new NullPointerException("key can't be null");
  // }
  // if (key.equals("")) {
  // throw new IllegalArgumentException("key can't be empty");
  // }
  // }

  public static String getTestDirectory() {
    String fileName = getLogFile();
    File file = new File(fileName);
    if (file.exists()) {
      return file.getParent();
    }
    return "";
  }

  public static String getLogFile() {
    try {
      ResourceBundle bundle = ResourceBundle.getBundle("log4j");
      String fileName = bundle.getString("log4j.appender.file.file");
      if (fileName != null) {
        return fileName;
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
    return "";
  }
}
